Mysql
 sql >> Baza danych >  >> RDS >> Mysql

przechowywanie klucza obcego, nie z metody POST formularza, ale z danych formularza, które już posiadam

Nie próbuj przypisywać int dla payment.student .Przypisz student przykład.

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

Ponadto powinieneś przestrzegać zasad stylów kodowania (przeczytaj o PEP8 ):

  • Nazwy klas zaczynają się od wielkich liter
  • nazwy pól nie zaczynają się od wielkich liter
  • zmienne i pola nie używają wielkości liter wielbłąda - nazwy klas tak

Twój kod będzie działał bez tych reguł, ale jako programiści Pythona mamy pewne standardy dotyczące czytelnego kodu.

A w Django nie musisz definiować pola klucza głównego - jest ono tworzone automatycznie i dostępne za pomocą instance.pk .
I nie jestem pewien, czy naprawdę chcesz, aby Twój klucz obcy wskazywał na student kolumna student tabeli.
I możesz po prostu zaimportować student model, jeśli jest zdefiniowany w innym module.

Więc z tymi poprawkami twoja definicja klasy powinna wyglądać następująco:

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)

Teraz każda instancja Payment ma niejawne pole pk co oznacza klucz podstawowy. I na koniec linia w twoim widoku z poprawkami stylizacji:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytania MySQL do wielowymiarowej tablicy php

  2. MySQL sprawdza, czy istnieje wiele wierszy

  3. Jmeter wyświetla błąd:nie można utworzyć PoolableConnectionFactory (odmowa dostępu dla użytkownika „[email protected]”@„118.185.61.226” (przy użyciu hasła:YES))

  4. Wykonywanie różnych zapytań za pomocą mysql-python

  5. Funkcja MAX używana z klauzulą ​​GROUP BY