Задать вопрос
@san7667

Добавление записи в таблицу «Django»?

Добрый день! Пишу первый web проект на Django
Пытаюсь реализовать справочник стран и городов в них
Есть 2 модели:
class Strana(models.Model): # 1 модель
    name_s = models.CharField('Наименование', max_length=70)
    def get_absolute_url(self): 
        return reverse('spr_strana')
    def get_UpdateUrl(self):
        return reverse('update_str_strana',kwargs={'pk':self.pk})
    
    def get_DeleteUrl(self):
        return reverse('delete_str_strana',kwargs={'pk':self.pk})

class Gorod(models.Model): #2 модель
   id_strana=models.ForeignKey(Strana, on_delete=models.CASCADE)
   name_g = models.CharField('Наименование', max_length=70)


Вопрос: после того как я добавил запись в модель strana, как мне добавить запись в модель gorod к определенной записи модели strana?
  • Вопрос задан
  • 177 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@chemdev
country = Strana.object.create(name_s="Russia")
city = Gorod.objects.create(name_g="Moscow", id_strana=country)

Пожалуйста, поработайте над неймингом, а то захотелось глаза продезинфецировать после увиденного и написанного
Ответ написан
@san7667 Автор вопроса
Переопределяю метод POST, как мне узнать в данном случае текущий id родительской модели strana?

urls.py
path('strani', StranaListView.as_view(), name='strani'),
path('new_strana', StranaCreate.as_view(),  name='new_strana'),
path('goroda', GorodListView.as_view(), name='goroda'),
path('new_gorod', GorodCreate.as_view(), name='new_gorod')


views.py
class GorodCreate(generic.CreateView): 
    model = Gorod
    form_class = GorodForm
    template_name = 'main/create_gorod.html'
    context_object_name = 'gorod'

    def post(self, request, *args, **kwargs):
        form = self.form_class(request.POST)
        post = form.save(commit=False)
        post.strana_id = #???
        post.save()
        return HttpResponseRedirect('strani')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы