sql >> Database teknologi >  >> RDS >> Mysql

lagring af fremmednøgle, ikke fra form POST-metoden, men fra formulardata, jeg allerede har

Forsøg ikke at tildele int for payment.student .Tildel student eksempel.

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

Desuden bør du følge reglerne for kodningsstil (læs om PEP8 ):

  • klassenavne startede med store bogstaver
  • feltnavne starter ikke med store bogstaver
  • variabler og felter bruger ikke kamelbogstaver - det gør klassenavne

Din kode fungerer uden disse regler, men som Python-udviklere har vi nogle standarder for læsbar kode.

Og i Django behøver du ikke at definere primært nøglefelt - det oprettes automatisk og er tilgængeligt med instance.pk .
Og jeg er ikke sikker på, om du virkelig vil have din fremmednøgle til at pege på student kolonne af student tabel.
Og du kan bare importere student model, hvis den er defineret i et andet modul.

Så med disse rettelser skulle din klassedefinition være sådan:

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)

Nu har enhver betalingsinstans et implicit felt pk som står for primær nøgle. Og endelig en linje i din visning med stylingkorrektioner:

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. SQLite introducerer UNIXEPOCH()-funktionen

  2. Sammenføjning af forskellige datakilder i lagdeling

  3. 2 tæller(*)+grupper efter+at+være med

  4. ORA-01438:værdi større end den specificerede præcision tilladt for denne kolonne, når der indsættes 3