我正在尝试创建一个Django应用程序,其中每个用户都附加了一个模型(植物列表),该模型由单个植物组成。我已经知道我可以使用外键通过多对一关系将植物连接到植物列表,如下所示:
class PlantList(models.Model):
plant_list_id = models.AutoField(primary_key=True)
class Plant(models.Model):
plantlist = models.ForeignKey(PlantList, on_delete = models.CASCADE)
name = models.CharField(max_length = 20)
wateringInterval = models.PositiveSmallIntegerField()但是,我希望每个用户都有一个植物列表,可以根据他们添加到列表中的植物为每个用户显示唯一的植物列表。我如何让每个用户都有一个植物列表?
我试着把它放在注册表中,但我不知道怎么做,我希望每个plantlist都有一个唯一的ID,这样我就可以更容易地向其中添加植物。
class AddNewPlant(forms.Form):
name = forms.CharField(label='Name',max_length = 20)
wateringInterval = forms.IntegerField(label='Watering Interval')发布于 2021-05-12 23:21:51
问题是,您不需要模型PlantList。
相反,您应该做的是:将ForeignKey设置为Plant Model中的User Model,并在该foreign_key中设置related_name='plants'。
要访问用户模型,请使用:
from django.contrib.auth import get_user_model代码示例:
class Plant(models.Model):
user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, related_name='plants')
name = models.CharField(max_length = 20)
wateringInterval = models.PositiveSmallIntegerField()然后,您可以使用以下命令访问用户的所有工厂:
first_user = get_user_model().objects.first().plants发布于 2021-05-12 23:32:39
试试这个:
class User(models.Model):
plant_list = models.ForeignKey(PlantList, on_delete=models.CASCADE)这是用于连接plant_list和用户的。此外,您还需要更改plant和plant_list之间的关系,以便用户也可以拥有相同的植物,如下所示:
class Plant(models.Model):
plantlist = models.ManyToManyField(PlantList)这样一来,不同的用户可以在他们的plant_list上拥有相同的plant_list,而每个用户只有一个plants。
https://stackoverflow.com/questions/67506376
复制相似问题