Anfängerfrage: Django Modell Beziehungen

Django, Flask, Bottle, WSGI, CGI…
Antworten
djangoUser
User
Beiträge: 2
Registriert: Dienstag 8. Januar 2019, 11:52

Hey leute,

ich versuche aktuell mich in Django einzuarbeiten und bin dabei noch blutiger Anfänger.

Ich versuche folgendes abzubilden:

Ein Kunde kann mehrere Aufträge haben, jeder Auftrag aber nur einen Kunden.

vom Kunde zu Auftag habe ich die Beziehung per ForeignKey definiert:

Code: Alles auswählen

    
class Kunde(models.Model):
    ... 
    auftraege = models.ForeignKey(Auftrag,
    models.SET_NULL,
    blank=True,
    null=True,
    )
...    
so weit so gut. Nur leider kann ich jetzt die gleiche Auftragsnummer mehreren Kunden zuordnen.

Code: Alles auswählen

unique=True
hilft mir im Modell Kunde auch nicht weiter, da ich damit ja auch nur noch einen Auftrag haben kann.


Die einzige Lösung die mir eingefallen ist mir im Modell "Auftrag" ein Feld "Kunde" einzubauen, das ich mit einer angepassten speicher Methode aus dem Modell Kunde zu aktualisieren, und nur Aufträge ohne zugeordneten Kunden in der selektion anzuzeigen.

Das fühlt sich aber ziemlich umständlich an. Gibt es da keine einfachere Lösung?

Mir reicht auch das passende Schlagwort zum selber googeln. Leider stehe ich da grad einfach auf dem Schlauch.

Vielen Dank schon jetzt
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@djangoUser: Ein Fremdschlüssel kann ja nur *einen* Wert annehmen, also ist der im Kunden falsch, denn dann kannst Du nicht nur einen Auftrag mehreren Kunden zuordnen sondern einen Kunden auch nur einen einzigen Auftrag. Deswegen brauchst Du den Fremdschlüssel beim Auftrag.

Durch den Fremdschlüssel auf dem Auftragsobjekt, gibt es ja bereits auf den Kunden-Objekten automagisch `QuerySet`-Attribute für die Rückrichtung. Ich sehe also nicht was man sich da umständlich selbst basteln müsste. Einfach ein `cusomer.order_set.add(order)` sollte reichen um einen Auftrag dem entsprechenden Kunden zuzuordnen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
djangoUser
User
Beiträge: 2
Registriert: Dienstag 8. Januar 2019, 11:52

Umständlich wird es nur, wen man (wie Ich in dem Fall) falsch denkt.

Danke, du hast mir sehr gehofen!

Kaum ist der Fremdschlüssel an der richtigen Stelle, schon wird vieles logischer :)
Antworten