В Django, если вы хотите создать модель, вы можете сделать это следующим образом:Джанго создания экземпляров модели без именованных аргументов
class SomeModel(models.Model):
a = models.CharField(max_length=10)
b = models.CharField(max_length=20)
c = models.CharField(max_length=30)
d = models.CharField(max_length=40)
e = models.CharField(max_length=50)
f = models.CharField(max_length=60)
Теперь, если вы хотите создать экземпляр в оболочке, вы должны сделать :
> abcdef = SomeModel(a="stuff", b="stuff", c="stuff", d="stuff", e="stuff", f="stuff")
Это очень раздражает, если вам нужно создавать экземпляры моделей с длинными именами свойств. Есть ли способ просто отправить такие аргументы, как вы, с обычным объектом Python (как и без того, чтобы не называть переменные и просто отправлять переменные в порядок)?
Как это:
> abcdef = SomeModel("stuff", "stuff", "stuff", "stuff", "stuff", "stuff")
Как и в обычном классе Python в инициализации функции.
Спасибо :)
Вот моя текущая модель Python:
class School(models.Model):
urn = models.CharField(max_length=6)
name = models.CharField(max_length=100)
house = models.CharField(max_length=50)
street = models.CharField(max_length=50)
county = models.CharField(max_length=50)
postcode = models.CharField(max_length=8)
def __unicode__(self):
return str(
'URN: ' + self.urn + ', ' +
'Name: ' + self.name + ', ' +
'House: ' + self.house + ', ' +
'Street: ' + self.street + ', ' +
'County: ' + self.county + ', ' +
'Postcode: ' + self.postcode + ', '
)
Вы попробовали? Модель Django * является * нормальным объектом Python. –
Да, я попробовал. Первый аргумент - это первичный ключ и приводит к ошибке:/Я знаю, что его можно манипулировать обычным способом, но то, что я хочу изменить, - это функция __init__. – Pictraz
Ах, хороший момент. Ну, а как просто пропустить «Нет» в качестве первого аргумента? Тогда pk останется как None и будет установлен как обычно при сохранении. –