Как данные из настраиваемого поля, которые не являются частью модели, загружаются в базу данных? Я имею эту модельзагрузить пользовательское поле, которое не входит в модель в базу данных
модель-CompoundSynonym
compound = models.ForeignKey('MDictionary', blank=False, null=True)
synonym_type = models.ForeignKey('SynonymType')
synonym_name = models.CharField(max_length=50, blank=True, null=True, help_text=u'Synonym for the compound')
def __unicode__(self):
return u'%s' % (self.synonym_name)
И у меня есть form.py, чтобы добавить пользовательские поля к модели. Пользовательское поле - это fileField, который принимает текстовый файл с именами synonym_names. Это настраиваемое поле позволяет загружать более одного имени synonym_ для конкретного соединения и synonym_type.
модель текстовый файл
Rege574574
Rege337483
Rege394837
Rege348389
В теории каждый раз, когда я нажимаю сохранить со страницы adminx Я хочу файл, который будет проанализирован и synonym_name из файла вставляется для конкретного соединения, synonym_type.
Но в моем случае загружается synonym_name в исходной (модели) формы (который пуст, когда я даю файл)
Это то, что у меня есть:
form.py
class CompoundSynonymForm(ModelForm):
file_upload = FileField(required=False)
print "YES"
def save(self, commit=True):
file_upload = self.cleaned_data.get('file_upload', None)
print file_upload
with open("../../Downloads/model_file_upload.txt", 'r') as f:
print "here "
model_file = File(f)
names = model_file.read()
name_list = names.split('\n')
for each_name in name_list:
if each_name != 'Header':
<this is where I have to save them>
class Meta:
model = CompoundSynonym
Я получаю анализ файла и имена из файла, но я не смог сохранить их в базе данных. Как мне переписать имя синонима из modelform в мои имена из файла?
UPDATE
with open("../../Downloads/model_file_upload.txt", 'r') as f:
print "here "
model_file = File(f)
names = model_file.read()
name_list = names.split('\n')
for each_name in name_list:
if each_name != 'Header':
obj = super(CompoundSynonymForm, self).save(commit=False)
obj.synonym_name = each_name
if commit:
obj.save()
return obj
Это экономит только первую строку файла.
Что именно это нужно в вашей базе данных? Можете ли вы опубликовать полную модель и полную форму, пожалуйста, – e4c5
Я опубликовал полную форму и полную модель – djpy