不断向 Django 模型添加新条目
Continuously add new entries to Django model
我需要一些概念上的帮助来理解这个想法是如何运作的。如果我让用户创建一个列表并且他们可以向每个列表添加无限项,我将如何绘制模型?
在我的列表模型中我有 user = ForeignKey(User)
,所以这个列表模型的每个实例都归因于当前登录的用户,他们可以有一系列列表。但是,如果他们想将一个项目添加到列表中,我是否可以使用一个名为 add_item
的新模型并制作 list_name = foreignkey(user.listname)
?
#New List Model
class NewList(models.Model):
user = models.ForeignKey(User)
list_name = models.CharField(max_length = 100, default = "Enter List Name")
picture = models.ImageField(upload_to='profile_images', blank=True)
def __unicode__(self):
return self.list_name
#New Item Model
class NewItem(models.Model):
lists = models.ForeignKey(NewList)
# list_name = models.OneToOneField(User.list_name)
def __unicode__(self):
return self.user.username
听起来不错。例如,如果您的模型名为 MyList
,则:
my_user = ... # obtain a user object
my_item = MyList(user=my_user)
my_item.save()
如果我没理解错的话,
class MyList(models.Model):
user = ForeignKey(User)
list_name = CharField(...)
....
def list_items(self):
return self.mylistitems_set.all()
class MyListItem(models.Model):
mylist = ForeignKey(MyList)
item_name = .....
....
用户可以创建 he/she 想要的任意数量的列表,并且可以向特定列表添加任意数量的项目。所以逻辑是你创建任意数量的列表(MyList 上的记录)并通过 MyListItem
.
添加任意数量的项目。
以下是执行此操作的好方法:
alist = MyList(......)
alist.mylistitem_set.create(...) # add an item to alist
Django Reverse relations documentation is here
更新:获取特定用户的所有列表
user = User.objects.get() # a specific user
user.mylist_set.all() # returns all lists belong to that user.
你必须阅读更多关于 django 中反向关系的内容。
我需要一些概念上的帮助来理解这个想法是如何运作的。如果我让用户创建一个列表并且他们可以向每个列表添加无限项,我将如何绘制模型?
在我的列表模型中我有 user = ForeignKey(User)
,所以这个列表模型的每个实例都归因于当前登录的用户,他们可以有一系列列表。但是,如果他们想将一个项目添加到列表中,我是否可以使用一个名为 add_item
的新模型并制作 list_name = foreignkey(user.listname)
?
#New List Model
class NewList(models.Model):
user = models.ForeignKey(User)
list_name = models.CharField(max_length = 100, default = "Enter List Name")
picture = models.ImageField(upload_to='profile_images', blank=True)
def __unicode__(self):
return self.list_name
#New Item Model
class NewItem(models.Model):
lists = models.ForeignKey(NewList)
# list_name = models.OneToOneField(User.list_name)
def __unicode__(self):
return self.user.username
听起来不错。例如,如果您的模型名为 MyList
,则:
my_user = ... # obtain a user object
my_item = MyList(user=my_user)
my_item.save()
如果我没理解错的话,
class MyList(models.Model):
user = ForeignKey(User)
list_name = CharField(...)
....
def list_items(self):
return self.mylistitems_set.all()
class MyListItem(models.Model):
mylist = ForeignKey(MyList)
item_name = .....
....
用户可以创建 he/she 想要的任意数量的列表,并且可以向特定列表添加任意数量的项目。所以逻辑是你创建任意数量的列表(MyList 上的记录)并通过 MyListItem
.
以下是执行此操作的好方法:
alist = MyList(......)
alist.mylistitem_set.create(...) # add an item to alist
Django Reverse relations documentation is here
更新:获取特定用户的所有列表
user = User.objects.get() # a specific user
user.mylist_set.all() # returns all lists belong to that user.
你必须阅读更多关于 django 中反向关系的内容。