sql >> Databáze >  >> RDS >> Mysql

ukládání cizího klíče, nikoli z metody POST formuláře, ale pomocí dat formuláře, které již mám

Nepokoušejte se přiřadit int pro payment.student .Přiřadit student instance.

payment.student = student.get(pk=1) # Desired value `1` for foreign key assumed

Kromě toho byste měli dodržovat pravidla pro styl kódování (přečtěte si o PEP8 ):

  • názvy tříd začínají velkými písmeny
  • názvy polí nezačínají velkými písmeny
  • proměnné a pole nepoužívají velká a malá písmena – názvy tříd ano

Váš kód bude fungovat bez těchto pravidel, ale jako vývojáři Pythonu máme určité standardy pro čitelný kód.

A v Django nemusíte definovat pole primárního klíče – je vytvořeno automaticky a přístupné pomocí instance.pk .
A nejsem si jistý, jestli opravdu chcete, aby váš cizí klíč ukazoval na student sloupec student tabulku.
A můžete importovat pouze student model, pokud je definován v jiném modulu.

Takže s těmito opravami by vaše definice třídy měla vypadat takto:

from other_app.models import Student

class Payment(models.Model):
    student = models.ForeignKey(Student)
    date_time = models.DateField(auto_now_add=True)
    amount_due = models.DecimalField(max_digits=5, decimal_places=2)

Nyní má každá instance platby implicitní pole pk což znamená primární klíč. A konečně čára ve vašem zobrazení s úpravami stylů:

payment.student = Student.get(pk=1) # Desired value `1` for foreign key assumed
# payment is instance so all lowercase here
# Student on the right side is a class so started with capital



  1. neplatná chyba spouštěče

  2. php/timeout/reset připojení k serveru?

  3. Oracle Wait Events, které by měl znát každý

  4. Jak převést datum UTC na místní časové pásmo v MySql Select Query