2017-08-20 3 views
0

Ich habe zwei Tabellen RoomPriceDetails und HotelDetails. RoomPriceDetails hat einen Fremdschlüssel, den ich auf das Primärschlüsselfeld mit dem Namen hotel_id von HotelDetails verweisen möchte. Ich habe to_field Attribut dafür verwendet, aber es scheint, dass ich etwas falsch gehe. Es zeigt mir Fehler wieDjango to_field funktioniert nicht

ValueError: invalid literal for int() with base 10: 'BMH-1'.

, wenn ich versuche, die hotel_id 'BMH-1' in RoomPriceDetails hinzuzufügen. "BMH-1" ist eine Hotel-ID in HotelDetails. Wenn ich falsch liege, was ist der beste Weg, meinen Fremdschlüssel auf mein hotel_id Feld in HotelDetails zu setzen, um diese Werte zu akzeptieren.

Meine Modelle:

class RoomPriceDetails(models.Model): 
    room_type = models.CharField(max_length=255, primary_key=True) 
    hotel = models.ForeignKey(HotelDetails, to_field='hotel_id') 
    price_per_day = models.PositiveIntegerField(default=0) 

class HotelDetails(models.Model): 
    hotel_id = models.AutoField(primary_key=True, db_column='hotel_id') 
    name = models.CharField(max_length=255) 
    email = models.CharField(max_length=255) 
    reg_no = models.CharField(max_length=255) 
    contact_no = models.CharField(max_length=10) 
    owner_name = models.CharField(max_length=255) 
    owner_email = models.CharField(max_length=255) 
    owner_contact_no = models.CharField(max_length=255) 
    address = models.CharField(max_length=400) 
    city = models.CharField(max_length=255) 
    state = models.CharField(max_length=255) 
    pincode = models.CharField(max_length=6) 
+0

sind Bist du sicher, dass "BMH-1" die 'hotel_id' ist? [Autofeld] (https://docs.djangoproject.com/fr/1/1/ref/models/fields/#autofield) ist ein ganzzahliges Feld, soweit das Dokument weiß ... – PRMoureu

Antwort

0

Autofield eine ganze Zahl nur halten kann, standardmäßig Django Auto Feld legt.

An IntegerField that automatically increments according to available IDs. You usually won’t need to use this directly; a primary key field will automatically be added to your model if you don’t specify otherwise.

Was würden Sie ist primary_key zu Ihrem CharField hinzufügen möchten

Field.primary_key If True, this field is the primary key for the model.

In Ihrem Beispiel:

class HotelDetails(models.Model): 
    hotel_id = models.CharField(primary_key=True, db_column='hotel_id', max_length=10) 

Primärschlüssel nicht integer Having, Ihre DB Leistung verringern kann