不断向 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 中反向关系的内容。