Ich habe ein DB-Modell:Django nicht erlaubt Datensatz DB hinzuzufügen aufgrund nicht-Tabellen-Instanz
class building_list(models.Model):
building_id = models.CharField(max_length=25, verbose_name="Building ID", unique=True)
def __unicode__(self):
return self.building_id
class data(models.Model):
oDate = models.DateField()
building_id = models.ForeignKey(building_list, to_field = "building_id")
content = models.CharField(max_length=25, verbose_name="Content")
def __unicode__(self):
return self.content
Es gibt kein Problem Rekord über Admin-Portal hinzufügen, ich building_id von SELECT-Liste wählen und Alles ist okay.
Aber es gibt ein Problem, wenn ich versuche, Datensatz über Ansicht hinzuzufügen. Lassen Sie mich Ihnen meinen Code zeigen:
url(r'^(?P<building_id>[\w-]+)/$', views.test, name='test'),
def test(request, building_id):
if request.method == 'POST':
oDate = request.POST.get('oDate', '')
content = request.POST.get('content', '')
row = data(
oDate = oDate,
building_id = building_id,
content = content
)
return True
Ich sehe, dass
Cannot assign "u'BrI9'": "data.building_id " must be a "building_list" instance.
Kann mir jemand erklären, was ich falsch mache?
Ich sehe durchaus ein paar Probleme in Konventionen insbesondere die Namen der Klassen zu benennen. Ich finde es schwierig, data() als Initialisierung einer Instanz zu lesen. Ok, die Fehlermeldung, die klarstellt, dass building_id eine Instanz von BuildingList sein sollte, aber das Argument ist Nummer. So können Sie Gebäude Liste Objekt initialisieren müssen dann gehen für "data" –
row = Daten ( odate = odate, building_id = building_list.objects.get (building_id = building_id), content = Inhalt ) –
Vielen Dank Muthuraj Es hat das Problem gelöst! –