class Item(models.Model): cart = models.ForeignKey(Cart, verbose_name=_('cart')) quantity = models.PositiveIntegerField(verbose_name=_('quantity')) unit_price = models.DecimalField(max_digits=18, decimal_places=2, verbose_name=_('unit price')) # product as generic relation content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() objects = ItemManager() class Meta: verbose_name = _('item') verbose_name_plural = _('items') ordering = ('cart',) def __unicode__(self): return u'%d units of %s' % (self.quantity, self.product.__class__.__name__) def total_price(self): return self.quantity * self.unit_price total_price = property(total_price) # product def get_product(self): return self.content_type.get_object_for_this_type(pk=self.object_id) def set_product(self, product): self.content_type = ContentType.objects.get_for_model(type(product)) self.object_id = product.pk product = property(get_product, set_product)
class Comment(models.Model): content = models.CharField(max_length=1000) member = models.ForeignKey(Member, related_name="comments") work = models.ForeignKey(Work, related_name="comments") created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) objects = CommentManager()
class Reply(models.Model): content = models.CharField(max_length=1000) member = models.ForeignKey(Member, related_name="replies") comment = models.ForeignKey(Comment, related_name="replies") created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) objects = ReplyManager()
class Work(models.Model): title = models.CharField(max_length=100) year = models.IntegerField() desc = models.CharField(max_length=255) author = models.ForeignKey(User, related_name="works") created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) objects = WorkManager()
class Quote(models.Model): speaker = models.CharField(max_length=100, default="") message = models.CharField(max_length=255, default="") posted_by = models.ForeignKey(Member, related_name="posts") liked_by = models.ManyToManyField(Member, related_name="favs") created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) objects = QuoteManager()
class Activity(models.Model): title = models.CharField(max_length=222) description = models.CharField(max_length=1000) participant = models.ManyToManyField(User, related_name="participant") coordinator = models.ForeignKey(User, related_name="coordinator") created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) startdatetime = models.DateTimeField() enddatetime = models.DateTimeField() objects = ActivityManager()
class Item(models.Model): name = models.CharField(max_length=25) added_by = models.ForeignKey(Member, related_name="added_items") liked_by = models.ManyToManyField(Member, related_name="liked_items", default="") posted_date = models.DateField(default=datetime.date.today) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) objects = ItemManager()
class City(Place): name_std = models.CharField(max_length=200, db_index=True, verbose_name="standard name") location = models.PointField() population = models.IntegerField() region = models.ForeignKey(Region, null=True, blank=True) subregion = models.ForeignKey(Subregion, null=True, blank=True) country = models.ForeignKey(Country) elevation = models.IntegerField(null=True) kind = models.CharField( max_length=10) # http://www.geonames.org/export/codes.html timezone = models.CharField(max_length=40) class Meta: verbose_name_plural = "cities" @property def parent(self): return self.region
class District(Place): name_std = models.CharField(max_length=200, db_index=True, verbose_name="standard name") location = models.PointField() population = models.IntegerField() city = models.ForeignKey(City) @property def parent(self): return self.city
class Work(models.Model): title = models.CharField(max_length=100) year = models.IntegerField() desc = models.CharField(max_length=255) worktype = models.CharField(max_length=100, default="") author = models.ForeignKey(Author, related_name="works") excerpt = models.CharField(max_length=1500, default="") link = models.CharField(max_length=200, default="") liked_by = models.ManyToManyField(Member, related_name="liked_work") created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) objects = WorkManager()
class InstantMessengerProfile(Profile): data_manager = im_manager user = models.ForeignKey(User, db_index=True, related_name='instant_messenger_profiles') network_id = models.CharField(max_length=16, choices=data_manager.choices, db_index=True) username = models.CharField(max_length=64) def __unicode__(self): return self.username
class SocialNetworkProfile(Profile): data_manager = sn_manager user = models.ForeignKey(User, db_index=True, related_name='social_network_profiles') network_id = models.CharField(max_length=16, choices=data_manager.choices, db_index=True) username = models.CharField(max_length=64) def __unicode__(self): return self.network_id
class Subregion(Place): name_std = models.CharField(max_length=200, db_index=True, verbose_name="standard name") code = models.CharField(max_length=200, db_index=True) region = models.ForeignKey(Region) @property def parent(self): return self.region def full_code(self): return ".".join([self.parent.parent.code, self.parent.code, self.code])
class Student(models.Model): sname = models.CharField(max_length=20) sgender = models.BooleanField(default=True) sage = models.IntegerField() scontend= models.CharField(max_length=20) isDelete= models.BooleanField(default=False) # 关联外键 sgrade = models.ForeignKey("Grades")
class PrimaryStatistics(models.Model): character_name = models.ForeignKey(Character, related_name='player_stats', on_delete=models.CASCADE) strength = models.PositiveSmallIntegerField(default=10) dexterity = models.PositiveSmallIntegerField(default=10) constitution = models.PositiveSmallIntegerField(default=10) charisma = models.PositiveSmallIntegerField(default=10) intelligence = models.PositiveSmallIntegerField(default=10) wisdom = models.PositiveSmallIntegerField(default=10) armor_rating = models.PositiveSmallIntegerField(default = 10) player_level = models.PositiveSmallIntegerField(default=1) aura_points = models.PositiveSmallIntegerField(default = 10) hit_points = models.PositiveIntegerField(default=10) exp = models.PositiveIntegerField(default=0)
class Weapon(models.Model): #player = models.ForeignKey(User,related_name='player_name', on_delete=models.CASCADE) wielder = models.ForeignKey(Character, related_name='PC', on_delete=models.CASCADE) weapon_name = models.CharField(max_length=128) weapon_type = models.CharField(max_length=64) wield_type = models.CharField(max_length=7) attack_speed = models.CharField(max_length=16) hit_bonus = models.PositiveSmallIntegerField() damage_class = models.CharField(max_length=32) damage_bonus = models.SmallIntegerField() weapon_range = models.PositiveSmallIntegerField() def __str__(self): return self.weapon_name
class WebsiteProfile(models.Model): user = models.ForeignKey(User, db_index=True, related_name='website_profiles') name = models.CharField(max_length=64) url = models.URLField(verify_exists=True) def __unicode__(self): return self.url def _get_icon(self): # No known icons! Just return the Google service URL. return GOOGLE_PROFILE_URL % self.url icon = property(_get_icon)
class Product(models.Model): name = models.CharField(max_length=300) price = models.FloatField() description = models.TextField() count = models.IntegerField() category = models.ForeignKey(Category, on_delete=models.CASCADE, default=1) def to_json(self): return { 'id': self.id, 'name': self.name, 'price': self.price, 'description': self.description, 'count': self.count, 'category_id': self.category.id, }
class Character(models.Model): created_by = models.ForeignKey(User,related_name='player', on_delete=models.CASCADE) created_date = models.DateTimeField(blank=True, default=datetime.datetime.now) first_name = models.CharField(max_length=32) surname = models.CharField(max_length=32) age = models.PositiveSmallIntegerField(default=18) race = models.CharField(max_length=12) aura = models.CharField(max_length=64) sembelence = models.CharField(max_length=64) gender = models.CharField(max_length=10) fanuas_type = models.CharField(max_length=32, blank=True, null=True) citizenship = models.CharField(max_length=32) occupation = models.CharField(max_length=32) background = models.TextField(max_length=512, blank=True, null=True) def __str__(self): return self.surname + ", " + self.first_name
class Image(Orderable): def get_media_path(self, filename): pages = self.gallery.placeholder.page_set.all() return pages[0].get_media_path(filename) gallery = models.ForeignKey(GalleryPlugin, verbose_name=_("Gallery")) src = models.ImageField(_("Image file"), upload_to=get_media_path, height_field='src_height', width_field='src_width') src_height = models.PositiveSmallIntegerField(_("Image height"), editable=False, null=True) src_width = models.PositiveSmallIntegerField(_("Image height"), editable=False, null=True) title = models.CharField(_("Title"), max_length=255, blank=True) alt = models.TextField(_("Alt text"), blank=True) def __unicode__(self): return self.title or self.alt or str(self.pk)
class Skills(models.Model): character_skilled = models.ForeignKey(Character, related_name='char_skills', on_delete=models.CASCADE) acrobatics = models.PositiveSmallIntegerField(default=0) animal_handling = models.PositiveSmallIntegerField(default=0) dust = models.PositiveSmallIntegerField(default=0) #from arcana, makes more sense in remnant, even with maidens athletics = models.PositiveSmallIntegerField(default=0) deception = models.PositiveSmallIntegerField(default=0) history = models.PositiveSmallIntegerField(default=0) insight = models.PositiveSmallIntegerField(default=0) intimidation = models.PositiveSmallIntegerField(default=0) investigation = models.PositiveSmallIntegerField(default=0) aura = models.PositiveSmallIntegerField(default=0) #aura? nature = models.PositiveSmallIntegerField(default=0) perception = models.PositiveSmallIntegerField(default=0) performance = models.PositiveSmallIntegerField(default=0) grimm = models.PositiveSmallIntegerField(default=0) sleight_of_hand = models.PositiveSmallIntegerField(default=0) stealth = models.PositiveSmallIntegerField(default=0) survival = models.PositiveSmallIntegerField(default=0)
class PostalCode(Place): code = models.CharField(max_length=20) location = models.PointField() country = models.ForeignKey(Country, related_name='postal_codes') # Region names for each admin level, region may not exist in DB region_name = models.CharField(max_length=100, db_index=True) subregion_name = models.CharField(max_length=100, db_index=True) district_name = models.CharField(max_length=100, db_index=True) objects = models.GeoManager() @property def parent(self): return self.country @property def name_full(self): """Get full name including hierarchy""" return u', '.join(reversed(self.names)) @property def names(self): """Get a hierarchy of non-null names, root first""" return [ e for e in [ force_unicode(self.country), force_unicode(self.region_name), force_unicode(self.subregion_name), force_unicode(self.district_name), force_unicode(self.name), ] if e ] def __unicode__(self): return force_unicode(self.code)
class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0)
class Wish(models.Model): wish = models.ForeignKey(Item, related_name='wishers') wisher = models.ForeignKey(User, related_name='wishes') created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True)
class Item(models.Model): title = models.CharField(max_length=255) user = models.ForeignKey(User, related_name='items') created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True)
class Items(models.Model): name = models.CharField(max_length=255) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) creator = models.ForeignKey("User", related_name = "creator") adder = models.ManyToManyField("User", related_name = "adder")
class Event(models.Model): class Meta: verbose_name = _('event') verbose_name_plural = _('events') ordering = ['-event_date', '-start_time', '-title'] get_latest_by = 'event_date' permissions = (("change_author", ugettext("Change author")), ) unique_together = ("event_date", "slug") def __unicode__(self): return _("%(title)s on %(event_date)s") % { 'title': self.title, 'event_date': self.event_date } @models.permalink def get_absolute_url(self): return ('agenda-detail', (), { 'year': self.event_date.year, 'month': self.event_date.month, 'day': self.event_date.day, 'slug': self.slug }) objects = models.Manager() on_site = CurrentSiteManager() published = PublicationManager() # Core fields title = models.CharField(_('title'), max_length=255) slug = models.SlugField(_('slug'), db_index=True) event_date = models.DateField(_('date')) start_time = models.TimeField(_('start time'), blank=True, null=True) end_time = models.TimeField(_('end time'), blank=True, null=True) location = models.ForeignKey(Location, blank=True, null=True) description = models.TextField(_('description')) calendar = models.ForeignKey("Calendar", blank=True, null=True, related_name='events') # Extra fields add_date = models.DateTimeField(_('add date'), auto_now_add=True) mod_date = models.DateTimeField(_('modification date'), auto_now=True) author = models.ForeignKey(User, verbose_name=_('author'), db_index=True, blank=True, null=True) publish_date = models.DateTimeField(_('publication date'), default=datetime.now()) publish = models.BooleanField(_('publish'), default=True) allow_comments = models.BooleanField(_('Allow comments'), default=True) sites = models.ManyToManyField(Site) def save(self): super(Event, self).save() if not settings.DEBUG: try: ping_google() except Exception: import logging logging.warn('Google ping on save did not work.')
class DustPouch(models.Model): character_owner = models.ForeignKey(Character, related_name='character_dust', on_delete=models.CASCADE) wind = models.PositiveSmallIntegerField(default=0) fire = models.PositiveSmallIntegerField(default=0) lightning = models.PositiveSmallIntegerField(default=0) water = models.PositiveSmallIntegerField(default=0)
class Meal(models.Model): organizer = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='organizer') time = models.DateTimeField(null=True, blank=True) location = models.CharField(max_length=100) required = models.NullBooleanField(default=None)
class Message(models.Model): room = models.ForeignKey(Room, related_name="messages") handle = models.TextField() message = models.TextField()