...我试图用2种不同模型保存2个表格保存的数据,但我不知道如何保存关系。保存数据后,我需要将它们显示为一个html表单,当用户键入信息时也是一个html表单。
有了这个观点,我在两个模型中保存了信息,但是我无法保存关系。 可能是POST有一个不同的工作在这个问题....我不知道
view.py
def proposeActivity(request):
if request.method == "POST":
form_1 = ActivityProposedForm(request.POST, prefix="form_1")
form_2 = ActivityUrl_activity(request.POST, prefix="form_2")
if form_1.is_valid() and form_2.is_valid():
post_1 = form_1.save(commit=False)
post_2 = form_2.save(commit=False)
post_1.author = request.user
post_2.author = request.user
post_1.save()
post_2.save()
return redirect('proposedActivities')
else:
form_1 = ActivityProposedForm(prefix="form_1")
form_2 = ActivityUrl_activity(prefix="form_2")
return render(request, 'registerActivity.html', {'form_1': form_1, 'form_2': form_2})
forms.py
class ActivityProposedForm(forms.ModelForm):
class Meta:
metodologias_choices = [(metodologia.id, metodologia.methodology_name) for metodologia in Methodology.objects.all()]
normas_choices = [(normas.id, normas.norm_name) for normas in Norm.objects.all()]
# competencias_choices =
# CHOICES = {('1', 'Activa'), ('2', 'Tradicional')}
model = ActivityProposed
fields = [
'nombre_actividad', 'detalle_de_la_actividad', 'metodologia',
'nombre_de_la_norma', 'nombre_de_la_competencia',
'nombre_del_curso']
labels = {
'nombre_actividad': 'Nombre de la Actividad',
'detalle_de_la_actividad': 'Detalla de la Actividad',
'metodologia': 'Metodologia',
'nombre_de_la_norma': 'Nombre de la Norma',
'nombre_de_la_competencia': 'Nombre de la Competencia',
'nombre_del_curso': 'Nombre del Curso'
}
widgets = {
'nombre_actividad': forms.TextInput(attrs={'class': 'form-control'}),
'detalle_de_la_actividad': forms.Textarea(attrs={'class': 'form-control', 'rows': '3'}),
'metodologia': forms.Select(attrs={'class': 'select'}, choices=metodologias_choices),
'nombre_de_la_norma': forms.Select(attrs={'class': 'select'}, choices=normas_choices),
'nombre_de_la_competencia': forms.TextInput(attrs={'class': 'form-control'}),
'nombre_del_curso': forms.TextInput(attrs={'class': 'form-control'}),
}
class ActivityUrl_activity(forms.ModelForm):
class Meta:
model = Url_activity
fields = (
'url_de_la_actividad', 'nombre_url')
labels = {
'url_de_la_actividad': 'URL de la Actividad',
'nombre_url': 'Nombre del Boton a la URL'
}
widgets = {
'url_de_la_actividad': forms.URLInput(),
'nombre_url': forms.TextInput(attrs={'class': 'form-control'})
}
models.py
class Url_activity (models.Model):
url_de_la_actividad = models.URLField()
nombre_url = models.CharField(max_length=10, null=True)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False, null=True)
lastModification = models.DateTimeField(auto_now_add=False, auto_now=True, null=True)
def __unicode__(self):
return self.url_de_la_actividad
class ActivityProposed (models.Model):
nombre_actividad = models.CharField(max_length=50)
detalle_de_la_actividad = models.TextField()
metodologia = models.CharField(max_length=50)
foreign_url = models.ForeignKey(Url_activity, on_delete=models.CASCADE, null=True, blank=True)
nombre_de_la_norma = models.CharField(max_length=50)
nombre_de_la_competencia = models.CharField(max_length=100)
nombre_del_curso = models.CharField(max_length=50)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False, null=True)
lastModification = models.DateTimeField(auto_now_add=False, auto_now=True, null=True)
foreing_activity = models.ForeignKey(Activity, on_delete=models.CASCADE, null=True, blank=True)
def __unicode__(self):
return self.nombre_actividad
谢谢大家!!
答案 0 :(得分:0)
然后解决方案是......
views.py
post_2 = form_2.save(commit=False)
post_1 = form_1.save(commit=False)
post_2.author = request.user
post_1.author = request.user
post_2.save()
post_1.foreign_url = post_2
post_1.save()