我应该如何给ForeignKey模型?

时间:2017-09-03 11:37:52

标签: python django

我应该如何给ForeignKey模型? 现在models.py有User& Item表,如

from django.db import models

# Create your models here.
class User(models.Model):
    user_id = models.CharField(max_length=200)
    name_id = models.CharField(max_length=200)
    regist_date = models.DateTimeField(auto_now=True)

class Item(models.Model):
    user_id = models.CharField(max_length=200)
    name = models.CharField(max_length=200)
    item_name = models.CharField(max_length=200)
    price = models.CharField(max_length=200)

我想将user_id& name_id视为Foreing key.User表是父表,Item是child one。我认为Item中的user_id和name_id应该像ForeignKey一样

class Item(models.Model):
        user_id = models.ForeignKey()
        name = models.ForeignKey()

但是,如何连接这两个模型的用户是父母和物品是孩子?我该怎么写呢?

4 个答案:

答案 0 :(得分:1)

当然,您必须阅读that

看起来像一个用户 - >很多物品。 它的ForeignKey,我们必须在用户模型中设置它。

class Item(models.Model):
    ...

class User(models.Model):
    ...
    item = models.ForeignKey(Item)

答案 1 :(得分:1)

您可以使用类似

的内容
class Item(models.Model):
    user = models.ForeignKey(User, related_name='items')

从item访问user_id将是

item.user.user_id

访问用户的所有项目

user.items.all()

答案 2 :(得分:0)

一个用户可以拥有多个项目:

class User(models.Model):
    username = models.CharField(max_length=200)
    regist_date = models.DateTimeField(auto_now=True)

class Item(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE)
    itemname = models.CharField(max_length=200)
    itemprice = models.CharField(max_length=200)

如果有项目:

有关此项目所属用户的详细信息,请参阅:

username = item.user.username
userid = item.user.id

如果给出了Userid:

可以通过以下方式找到属于该用户的所有项目:

items = Item.objects.filter(user__id=givenuserid)

答案 3 :(得分:0)

阅读ForeignKey field上的文档是个好主意。

至于您的问题,您可以将Item模型连接到User模型,如下所示:

class Item(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)

同样,阅读文档并确定您需要什么是一个好主意,例如删除User对象时的操作(我的代码中的on_delete部分)。< / p>