2017-09-03 60 views
0

ForeignKeyをモデル化する方法を教えてください。 は今models.py私はForeing key.Userテーブルとして扱うのuser_id & NAME_IDをしたい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) 

のようなユーザー&アイテムのテーブルを持っていることは、親テーブルであり、項目である子one.Iは、アイテムのuser_idの& NAME_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

あなたは次のようになります

item.user.user_id 

なるユーザーからすべての項目にアクセスします項目からuser_idのアクセス

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

ようなものを使用することができます

user.items.all() 
+0

THX、ウルcomments.Iは クラスのユーザー(models.Model)を書いた: USER_ID = models.CharField(MAX_LENGTH = 200) NAME_ID = models.CharField(MAX_LENGTH = 200) regist_date = models.DateTimeField(auto_now =真) クラスアイテム(モデル。モデル): user = models.ForeignKey(ユーザー、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.user_idを実行してuser_idを取得することができます。ここでitemはItemモデルのインスタンスです – arjun27

0

1つの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) 

項目が指定されている場合、ユーザーIDが指定されている場合は

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

:STO属し、この項目はで見つけることができたユーザーに関する

詳細を

このユーザーの全アイテムは、

で見つかりました。
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の部分は私のコードです)。

関連する問題