Я начинаю изучать django, и у меня есть эта проблема с новичком: Мне нужно моделировать отношение между моделью - одно для многих. У одного провайдера должно быть много DetailLoad.сохранить дублированные записи в Django
Я создаю форму для DetailLoad, где мне нужно только сохранить id_proveedor (FK), anio и mes. Но когда я пытаюсь сохранить форму, отображается ошибка проверки "detail Load для этого провайдера уже существует".
Models.py
class Provider(models.Model):
id_proveedor = models.AutoField(primary_key=True, db_column='id_proveedor')
nombre = models.CharField(max_length=50, blank=True)
tipo = models.CharField(max_length=50, blank=True)
asignado_a = models.CharField(max_length=15, blank=True, verbose_name='Asignado a')
moneda = models.CharField(max_length=1, blank=True)
class Meta:
managed = False
db_table = 'mpc_proveedores'
def __unicode__(self):
return self.nombre
class DetailLoad(models.Model):
id_proveedor = models.ForeignKey(Proveedor,db_column='id_proveedor', primary_key=True, verbose_name='Proveedor')
anio = models.IntegerField(blank=True, null=True)
mes = models.IntegerField(blank=True, null=True)
f_carga = models.DateField(blank=True, null=True, verbose_name='Fecha de carga')
usuario = models.CharField(max_length=15, blank=True)
registros = models.FloatField(blank=True, null=True,verbose_name='Cant. de Registros')
num_codigos = models.IntegerField(blank=True, null=True,verbose_name='Cant. codigos')
lista_codigos = models.CharField(max_length=2500, blank=True, verbose_name='Lista de Codigos')
class Meta:
managed = False
db_table = 'mpc_detalle_carga_archivo'
определение формы, которую я использую, чтобы сохранить данные:
class NewDetLoadForm(forms.ModelForm):
def __init__(self,*args,**kwargs):
super(NewDetRecForm,self).__init__(*args,**kwargs)
self.helper = FormHelper(self)
self.helper.layout.append(Submit('save','Grabar'))
self.helper.layout = Layout(
Fieldset('',
'id_proveedor',
'anio',
'mes',
Submit('save','Grabar'),
)
)
class Meta:
model = DetalleRecepcion
мой взгляд:
def NewDetLoadView(request):
if request.method == "POST":
drform = NewDetLoadForm(request.POST or none)
if drform.is_valid():
drform.save()
return HttpResponseRedirect('/monitor/')
else:
drform = NewDetLoadForm()
return render_to_response('newdetload.html',locals(),
context_instance=RequestContext(request))
мне нужно быть в состоянии сохранять записи, выбирать поставщика и заполнять два других поля, даже если это повторяющиеся строки. Кстати, это устаревшая база данных, таблицы не имеют ограничений или каких-либо отношений других таблиц.
Заранее спасибо
Спасибо, я следую вашим советам, но теперь я получаю сообщение об ошибке ** ORA-00904: «MPC_DETAIL_LOAD». «Идентификатор»: недопустимый идентификатор ** – Joseleg
Чтобы выполнить это, вы должны установить и использовать южное приложение (если версия Django < 1.7) или выполнить миграцию (если версия Django> = 1.7), или вы должны вручную изменить таблицу с помощью некоторых инструментов oracle. Поскольку данные в вашей БД не изменились бы, если бы вы просто удалили 'primary_key = True' в своей модели. Взгляните на этот вопрос http://stackoverflow.com/questions/19339464/ora-00904-id-invalid-identifier – madzohan