2017-09-28 3 views
1

Hallo ich habe 3 Modelle in meinen Django-Projekten, wenn Benutzer Anfrage senden Ich habe seine dealer_id Ich brauche Abfrage Abfrage mit Informationen über Material aus Materialtabelle und für jede Zeile hinzufügen discount_percent vom letzten Modell, wo dealer_id = aktuelle dealer_id und row id. Bitte hilf mir, wenn du Antwort hast.Django Feld zur Abfrage hinzufügen

Modelle

class Material(models.Model): 
    id = models.AutoField(primary_key=True) 
    color = models.IntegerField() 
    name = models.CharField(max_length=100) 
    material_width = models.IntegerField() 
    price = models.BigIntegerField(default=0) 

class Dealer(models.Model): 
    id = models.AutoField(primary_key=True) 
    dealer_name = models.CharField(max_length=100) 
    dealer_phone = models.CharField(max_length=13, unique=True) 
    dealer_email = models.CharField(max_length=150, null=False, unique=True) 
    dealer_firm_name = models.CharField(max_length=100, null=True) 
    dealer_address = models.CharField(max_length=100, null=True) 
    dealer_unp = models.CharField(max_length=9, null=True) 
    dealer_amount = models.FloatField(default=0.0) 
    user_id = models.BigIntegerField(unique=True) 

class MaterialDealerPrice(models.Model): 
    id = models.AutoField(primary_key=True) 
    dealer_id = models.BigIntegerField(null=False) 
    material_id = models.BigIntegerField(null=False) 
    discount = models.FloatField(null=True, default=0.0) 
+0

bitte Ihre Modelle Beschreibung anstelle von Text hinzufügen, und was Sie bereits versuchen. –

+0

Klasse Material (models.Model): id = models.AutoField (primary_key = True) color = models.IntegerField() name = models.CharField (max_length = 100) material_width = models.IntegerField() Preis = models.BigIntegerField (default = 0) –

+0

i alle Modelle bedeuten und nicht von Kommentar, bearbeiten Sie Ihre Frage –

Antwort

1

Das sieht aus wie eine Reihe von Modellen, die automatisch durch Ausführen inspectdb erstellt wurden. Sie sollten diese Ausgabe immer als ersten Entwurf behandeln. es gibt eine Menge, die es manuell aufzuräumen getan werden muss.

Erstens muss Ihr MaterialDealerPrice Modell Fremdschlüssel Händler und Material haben:

class MaterialDealerPrice(models.Model): 
    dealer = models.ForeignKey('Dealer', null=False) 
    material = models.ForeignKey('Material', null=False) 
    discount = models.FloatField(null=True, default=0.0) 

Zweitens sollten Sie erkennen, dass dieses Modell in der Tat ist die durch Tabelle einer Viele-zu-viele-Beziehung.

class Material(models.Model): 
    ... 
    dealers = models.ManyToManyField('Dealer', through='MaterialDealerPrice') 

Jetzt sollten Sie in der Lage sein, diese Beziehungen in Ihrer Abfrage zu folgen. Leider ist Ihre Frage nicht klar genug zu wissen, was Sie eigentlich tun wollen; Sie sollten ein Beispiel für die gewünschte Ausgabe geben.

Verwandte Themen