Джанго: Я не могу заставить Джанго автоматически создать автополе

#python #django #django-models #django-database

#питон #джанго #джанго-модели #django-база данных

Вопрос:

Я звоню BORROWER.objects.create(ssn=Ssn, bname=Name, address=Address, phone=Phone) из views.py , чтобы создать запись в моей базе данных sqlite. Это мое models.py файл с соответствующей функцией.

 class BORROWER(models.Model): card_id = models.AutoField(primary_key=True, max_length=7) ssn = models.CharField(max_length=11) bname = models.CharField(max_length=71) address = models.CharField(max_length=79) phone = models.CharField(max_length=15) def __str__(self):  return str(self.card_id)  

Запись в базе данных успешно создана. Однако, поскольку я не указываю значение для card_id поля, значение остается как (lt;django.db.models.fields.AutoFieldgt;,) вместо фактического ключа. Когда я пытаюсь указать значение card_id , оно говорит что-то о неожиданном аргументе. Я неправильно вызываю функцию создания?

Изменить: Запятая отсутствует в исходном коде, но я попробую внести предложенные изменения

Комментарии:

1. В конце этой строки есть конечная запятая, которая заключает кортеж AutoField в одноэлементный кортеж.

2. Извините, запятая отсутствует в исходном коде, я тестировал без запятой, и проблема сохраняется. Я попытаюсь еще раз убедиться в этом.

Ответ №1:

Удалите запятую в конце card_id и не используйте max_length с AutoFiled ..

 class BORROWER(models.Model): card_id = models.AutoField(primary_key=True) ssn = models.CharField(max_length=11) bname = models.CharField(max_length=71) address = models.CharField(max_length=79) phone = models.CharField(max_length=15) def __str__(self):  return str(self.card_id)  

Комментарии:

1. Спасибо, удаление max_length, казалось, исправило это!