как добавить новую запись с ModelForm во взаимосвязанных моделях - PullRequest
0 голосов
/ 07 мая 2019

Я попытался создать форму модели, чтобы добавить новую запись в мои модели в django. У меня есть 3 модели, и для этих моделей я создал формы, представления и шаблон.

(Обратите внимание, что в моем проекте яУ меня много кода, но я привожу некоторые из них здесь, которые объясняют мою проблему.)

Это мои файлы:

models.py

class ResearchRecord(models.Model):
    TYPE_CHOICES = (
        ('1','scientific_research'),
        ('2','conference'),
    )
    user = models.ForeignKey(User, on_delete=models.PROTECT)
    institutes = models.ForeignKey(EducationalInstitutes, on_delete=models.PROTECT)
    title = models.TextField(max_length=250, blank=False)
    type = models.TextField(max_length=100, blank=False, choices=TYPE_CHOICES)
    year = models.DateField(max_length=100)
    upload_url = models.FileField(upload_to='research-resume-files/')
    def __str__(self):
        return self.title
class EducationalInstitutes(models.Model):
    INSTITUTES_CHOICES = (
        ('1','university'),
        ('2','education_center'),
        ('3','school'),
    )
    name = models.TextField(max_length=100, blank=True)
    type = models.TextField(max_length=100, blank=False, choices=INSTITUTES_CHOICES)
    description = models.TextField(max_length=500, null=True, blank=True)
    educationl_institution_pic1 = models.ImageField(upload_to='educationl-institution-pics/',null=True)
    def __str__(self):
        return self.name

view.py

def view_research_resume(request):
    research_resume =ResearchRecord.objects.filter(user=request.user)
    research_resume_dict = {'research_resume':research_resume}
    return render(request,'education/job_research_education_records/research_resume/view_research_resume.html',research_resume_dict)
def add_research_resume(request):
    if request.method=="POST":
        form = AddResearchForm(request.POST)
        if form.is_valid():
            research_resume = form.save(commit=False)
            research_resume.user= request.user
            research_resume.save()
            return redirect('view_research_resume')

    else:
        form = AddJobForm()
    return render(request, 'education/job_research_education_records/research_resume/add_research_resume.html', {'form': form}) 

forms.py

class AddResearchForm(ModelForm):
    class Meta:
        model = ResearchRecord
        fields = [
            'title',
            'type',
            'year',
            'upload_url',
        ]

add_research_resume.html

<form method="post" >
    {% csrf_token %}
    {{form.as_p }}
    <button type="submit" class="btn btn-info">add</button>
</form>

urls.py

urlpatterns = [
      path('edu/resume/research/', views.view_research_resume, name='view_research_resume'),
    path('edu/resume/research/add', views.add_research_resume, name='add_research_resume'),]

Действительно, моя проблема:

  1. Iпроверить мою форму и проверить ее, но я не смог отправить форму.

  2. создать представление для добавления новой записи в представлении add_research_resume, которое указывает текущего пользователя и выбрать для институтов, которые являются FK в модели ResearchRecord.

  3. как отобразить поле данных вФорма и год получения в модели ResearchRecord.

Обратите внимание, что я сделал следующие вещи:

  1. Сначала я смог успешно конкурировать с моими моделями, и я показываюих в моем шаблоне правильно.
  2. Более того, я хочу добавить новую запись в мою модель, но, поскольку мои Модели сложны и связаны с другими таблицами, я не смог успешно добавить новые записи в мои модели.
  3. Кроме того, у меня также есть проблема с удалением записи из таблицы в моих моделях.
...