【问题标题】:How to autosave Foreignkey value inside my second Model with the id of my first model object.??如何使用我的第一个模型对象的 id 在我的第二个模型中自动保存外键值。??
【发布时间】:2018-11-25 11:16:53
【问题描述】:

我有两个模型。 Appname 和 Adspace,我在第二个模型中有一个外键对象,它连接到我的第一个模型。这是代码

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")

模型表单

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 中有它的 ID(当我在那里传递它时)。 我应该怎么做才能自动保存与在 url 中传递的相同 ID 号。

【问题讨论】:

    标签: python django python-3.x django-models django-admin


    【解决方案1】:

    在视图中定义form_valid并将其设置在那里。

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

    【讨论】:

    • 成功了!我正在使用 def save() 方法,认为我需要保存数据,所以我应该使用 def save() 方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多