2017-09-03 58 views
0

我应该如何给ForeignKey建模? 现在models.py有用户&项目表像我应该如何给ForeignKey建模?

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 &名_ID为Foreing key.User表是父表,项目是孩子one.I认为USER_ID &名_ID项应该有ForeignKey的像

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

不过,我应该如何连接这些2模式是用户是父母&项目是孩子呢?我应该怎么写呢?

+0

不要编写代码,只需告诉逻辑你需要什么。 –

回答

1

当然,您必须阅读that

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

class Item(models.Model): 
    ... 

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

您可以使用类似

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

从项目访问USER_ID将

item.user.user_id 

访问来自用户的所有项目将

user.items.all() 
+0

THX,乌尔comments.I写 类用户(models.Model): USER_ID = models.CharField(MAX_LENGTH = 200) 名_ID = models.CharField(MAX_LENGTH = 200) regist_date = models.DateTimeField(auto_now =真) class Item(models。model): user = models.ForeignKey(User,related_name ='items') item.user.user_id = models.CharField(max_length = 200) item.user.name = models.CharField(max_length = 200) item_name = models.CharField(max_length = 200) price = models.CharField(max_length = 200 – user8504021

+0

但未解决的引用'item'错误发生。我错了理解你的答案吗?我该如何解决这个问题? – user8504021

+0

你不需要在Item中重新定义user_id属性,一旦定义了外键,就可以通过执行item.user.user_id获取user_id,其中item是Item模型的一个实例 – arjun27

0

一个U ser可以有很多项目:

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) 

如果一个项目给出:

有关用户的详细信息到这个项目属于STO可以通过找出:

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

如果用户标识给出:

属于该用户的所有物品都可以通过以下方式找到:

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

您是否尝试过解决方案,它对您有用? –

0

这是一个好主意,请阅读ForeignKey field上的文档。

至于你的问题,您可将商品型号连接到用户模式是这样的:

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

再次,这是阅读文档,并找出正是你需要的,如一个好主意什么当一个User对象被删除时(我的代码中的on_delete部分)。

相关问题