我有两张表RoomPriceDetails
和HotelDetails
。 RoomPriceDetails
有一个外键,我想指向hotel_id
的名为HotelDetails
的主键字段。我为此使用了to_field
属性,但似乎我在某些地方出错了。它显示我的错误
ValueError:基数为10的int()的文字无效:'BMH-1'。
当我尝试在hotel_id
中添加RoomPriceDetails
'BMH-1'时。 'BMH-1'是HotelDetails
的酒店ID。如果我错了,那么让我的外键指向hotel_id
中的HotelDetails
字段以接受这些值的最佳方法是什么。
我的模特:
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 :(得分:0)
Autofield只能保存一个整数,默认情况下Django设置自动字段。
IntegerField,根据可用ID自动递增。您通常不需要直接使用它;如果您没有另外指定,主键字段将自动添加到您的模型中。
您希望将primary_key添加到您的CharField
Field.primary_key
如果为True,则此字段是模型的主键。
在你的例子中:
class HotelDetails(models.Model):
hotel_id = models.CharField(primary_key=True, db_column='hotel_id', max_length=10)
主键不是整数会降低您的数据库性能