2017-09-03 1 views
0

Wie sollte ich ForeignKey zum Modell geben? Jetzt hat models.py Benutzer & Artikel Tisch wieWie sollte ich ForeignKey modellieren?

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) 

I treat User_id & name_id will als Foreing key.User Tabelle übergeordnete Tabelle ist, und Item ist Kind one.I denken User_id & name_id in Artikel ForeignKey haben sollte wie

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

Doch wie sollte ich verbinden diese 2-Modell ist Mitglied ist Elternteil & Artikel Kind? Wie soll ich es schreiben?

+0

Schreiben Sie keinen Code, sagen Sie der Logik, was Sie brauchen. –

Antwort

1

Sicher, Sie müssen that lesen.

Sieht aus wie ein Benutzer -> viele Elemente. Sein ForeignKey und wir müssen es im Benutzermodell einstellen.

class Item(models.Model): 
    ... 

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

können Sie so etwas wie

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

Zugriff User_id von Artikel wird

item.user.user_id 

Zugriff auf alle Elemente von einem Benutzer

user.items.all() 
+0

thx, ur comments.I schrieb 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) Klasse Artikel (Modelle.Model): user = models.ForeignKey (Benutzer, related_name = 'Artikel') 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

aber ungelöst Verweis 'Element' Fehler passiert.Am falsch verstehe ich Ihre Antwort? Wie kann ich das beheben? – user8504021

+0

Sie müssen nicht Definieren Sie die Eigenschaft user_id erneut in Item.Sobald der Fremdschlüssel definiert ist, können Sie die user_id abrufen, item.user.user_id, wobei item eine Instanz des Item-Modells ist – arjun27

0

One u sein wird, Ser kann viele Gegenstände haben:.

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) 

Wenn ein Element gegeben:

Die Details über den Benutzer, auf die diese Artikel gehören sto von herausfinden können:

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

Wenn Userid gegeben:

Alle Artikel, die zu diesem Benutzer gehören, finden Sie unter:

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

Haben Sie die Lösung ausprobiert, hat es für Sie funktioniert? –

0

Es ist eine gute Idee, die Dokumentation auf der ForeignKey field zu lesen.

Was Ihre Frage, können Sie den Artikel Modell auf die User-Modell wie folgt verbinden:

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

Wieder ist es eine gute Idee, die Dokumentation und herauszufinden, zu lesen, was genau Sie benötigen, wie zum Beispiel, was zu tun, wenn ein User Objekt gelöscht wird (der on_delete Teil in meinem Code).

Verwandte Themen