簡體   English   中英

在Django中使用管理站點

[英]Using admin site in Django

我有一個帶有兩個日期字段的模型,用於提交和發布,以及一個用於批准的布爾字段。

class BlogModel(models.Model):
    title = models.CharField(max_length=100)
    article = models.CharField(max_length=255)
    pub_date = models.DateTimeField('date published')
    submitted_date = models.DateTimeField('date submitted')
    author = models.CharField(max_length=255)
    approved = models.BooleanField(default=False)
    def __str__(self):              # __unicode__ on Python 2
            return 'approved, ' + str(self.approved) + ' article, ' + self.article

我已將此模型包含在admin.py中。 管理員可以批准該文章,但是可以將pub_date設置為在管理員中批准文章的當前時間嗎?

更新這些模型適用於raja Simon建議的forms.py

class BlogForm(forms.ModelForm):
    class Meta:
        model = BlogModel
        fields = '__all__'
        # fields = ('id', 'title', 'article')

    def save(self, force_insert=False, force_update=False, commit=True):
        m = super(BlogForm, self).save(commit=False)
        # do custom stuff
        m.pub_date = timezone.now()
        if commit:
            m.save()
        return m

和admin.py

class BlogModelAdmin(admin.ModelAdmin):
    form = BlogForm
    fields = ('title', 'article', 'pub_date', 'submitted_date', 'author', 'approved')
    # fields = '__all__' won't work here, each field needs to be added individually as above
    pass
admin.site.register(BlogModel, BlogModelAdmin)

謝謝

您可以在管理員中覆蓋表單保存

class BlogModelAdmin(admin.ModelAdmin):
    form = BlogModelForm
    pass
admin.site.register(BlogModel, BlogModelAdmin)

並以forms

class BlogModelForm(ModelForm):
    class Meta:
        model = BlogModel
        fields = '__all__'

    def save(self, force_insert=False, force_update=False, commit=True):
        m = super(BlogModelForm, self).save(commit=False)
        # do custom stuff
        m.pub_date = timezone.now()
        if commit:
            m.save()
        return m

可以通過在管理員中使用save_model方法

def save_model(self, request, obj, form, change):
    if obj.approved:
        obj.pub_date =  timezone.now()

這可能優於覆蓋模型本身的save方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM