Как автоматически сохранить значение Foreignkey внутри моей второй Модели с идентификатором моего первого объекта модели. ?? - PullRequest
0 голосов
/ 25 ноября 2018

У меня две модели.Appname и Adspace, у меня есть объект Foreignkey во второй модели, который подключается к моей первой модели.Вот код

models.py

 class Appname(models.Model):
      name=models.CharField(max_length=150,blank=False,null=False,help_text='Add your new App')

      def __str__(self):
          return self.name

      def get_absolute_url(self):
          return reverse("dashapp:space",kwargs={'pk':self.pk})


class Adspace(models.Model):
      ad_space=models.CharField(max_length=150,blank=False,null=False) 
      app=models.ForeignKey('Appname', related_name='appnames',default=None, on_delete=models.CASCADE)
      PID_TYPE = (
    ('FN','FORMAT_NATIVE'),
    ('FNB','FORMAT_NATIVE_BANNER'),
    ('FI','FORMAT_INTERSTITIAL'),
    ('FB','FORMAT_BANNER'),
    ('FMR','FORMAT_MEDIUM,RECT'),
    ('FRV','FORMAT_REWARDED_VIDEO'),
)
     format_type=models.CharField(max_length=3,choices=PID_TYPE,default='FN',blank=False, null=False)

     def __str__(self):
          return self.ad_space

     def get_absolute_url(self):
          return reverse("dashapp:view")

modelForm

class AdspaceForm(forms.ModelForm):
    class Meta:
       model=Adspace
       fields=('ad_space',)

Views.py

class space(LoginRequiredMixin,CreateView):

       form_class=forms.AdspaceForm
       model=Adspace

Теперь я не могу заполнить мойФорма как он говорит, что app_id не может быть нулевым, и я разрешаю пользователю ввести его.Я хочу, чтобы у приложения, на которое нажали кнопку мыши, был свой идентификатор в URL (поскольку я передаю его туда).Что я должен сделать, чтобы он автоматически сохранялся с тем же номером идентификатора, который передается в URL.

1 Ответ

0 голосов
/ 25 ноября 2018

Определите form_valid в представлении и установите его там.

def form_valid(self, form):
    form.instance.app_id = self.kwargs["app_id"]
    return super().form_valid(form)
...