Django 保存管理员表单时,如何更新用户的日期字段?

Django 保存管理员表单时,如何更新用户的日期字段?,django,django-models,django-forms,django-admin,Django,Django Models,Django Forms,Django Admin,我构建了一个django应用程序,用于存储会议记录。studio note对象称为StudioMeetingNote,它有两个外键字段,分别为秘书和主席。每个CustomUser实例都有2个date字段,即last\u date\u president和last\u date\u secretary。当在StudioMeetingNote表单中为用户分配主席时,我希望此用户的last\u date\u chairman字段与分配给属于StudioMeetingNote本身的会议开始日期字段的日期

我构建了一个django应用程序,用于存储会议记录。studio note对象称为
StudioMeetingNote
,它有两个外键字段,分别为
秘书
主席
。每个
CustomUser
实例都有2个
date
字段,即
last\u date\u president
last\u date\u secretary
。当在
StudioMeetingNote
表单中为用户分配主席时,我希望此用户的
last\u date\u chairman
字段与分配给属于
StudioMeetingNote
本身的
会议开始日期字段的日期相同。这同样适用于
最后一天的秘书

我决定为此使用
def save_model
方法。它位于
StudioMeetingNoteAdmin
类中,该类表示管理部分中的
StudioMeetingNote
类。整个实现如下所示:

class StudioMeetingNoteAdmin(admin.ModelAdmin):

fields = (('meeting_start_time', 'meeting_end_time'), ('chairman', 'secretary'), 'absent_persons',)

# fieldsets = [
#     ('Tijden', {'fields': ['meeting_start_time', 'meeting_end_time']}),
#     ('Wie is de voorzitter/notulist', {'fields': [('chairman', 'secretary')]}),
#     ('Opkomst', {'fields': [('attending_persons', 'absent_persons')]}),
# ]
inlines = [OpeningAndParticularitiesInline, ActionListPointInline, RemarksPriorMeetingInline, IssuesToAddressInline, OurNextMoveInline, QuestionRoundInline]
list_filter = ['meeting_start_time']
search_fields = ['meeting_start_time']
list_display = ('meeting_start_time', 'chairman', 'secretary')
save_as = True

def save_model(self, request, obj, form, change):
    save_user = False
    if 'chairman' in form.changed_data:
        obj.chairman = form.cleaned_data['chairman']
        obj.chairman.last_date_chairman = form.cleaned_data.get('meeting_start_date')
        save_user = True
    if 'secretary' in form.changed_data:
        obj.secretary = form.cleaned_data['secretary']
        obj.secretary.last_date_secretary = form.cleaned_data.get('meeting_end_date')
        save_user = True
    if save_user:
        obj.save()
studio备忘
保存正确,但当我查看用户指定的秘书/主席是否已更新其秘书/主席日期时,我可以看到没有发生任何更新。有人能告诉我我的
save\u型号的代码有什么问题吗

多谢各位

编辑:这是完整的models.py文件

from django.contrib.auth.models import AbstractUser
from django.db import models
import pytz

# class MusicGroup(models.Model):
#     name = models.CharField(max_length=70)
from users.models import CustomUser


class StudioMeetingNote(models.Model):
    chairman = models.ForeignKey(CustomUser, on_delete=models.DO_NOTHING, related_name='chairman', verbose_name='Voorzitter')
    secretary = models.ForeignKey(CustomUser, on_delete=models.DO_NOTHING, related_name='secretary', verbose_name='Notulist')
    attending_persons = models.ManyToManyField(CustomUser, related_name='attending_persons', verbose_name='Aanwezig')
    absent_persons = models.ManyToManyField(CustomUser, related_name='absent_persons', verbose_name='Afwezig', blank=True)
    meeting_start_time = models.DateTimeField('Start tijd')
    meeting_end_time = models.DateTimeField('Eind tijd')

    def __str__(self):
        return str(self.meeting_start_time
                   .astimezone(pytz.timezone('CET'))
                   .date())

    class Meta:
        verbose_name = verbose_name_plural = 'Studio overleg notitie'
    # def __str__(self):
    #     return 'Studio overleg notitie'



class ActionListPoint(models.Model):
    studio_meeting = models.ForeignKey(StudioMeetingNote, on_delete=models.DO_NOTHING, related_name='studio_meeting_action_list', verbose_name='Studio overleg')
    who = models.ForeignKey(CustomUser, on_delete=models.DO_NOTHING, related_name='who', verbose_name='Wie')
    what = models.CharField(max_length=100, verbose_name='Wat', blank=True)
    when = models.CharField(max_length=50, verbose_name='Wanneer', blank=True)
    status = models.CharField(max_length=50, verbose_name='Status', blank=True)
    class Meta:
        verbose_name = verbose_name_plural = 'Actie punten lijst'


class OpeningAndParticularities(models.Model):
    studio_meeting = models.ForeignKey(StudioMeetingNote, on_delete=models.DO_NOTHING, related_name='studio_meeting_opening_particularities', verbose_name='Studio overleg')
    added_by = models.ForeignKey(CustomUser, on_delete=models.DO_NOTHING, related_name='added_by_p_and_p', verbose_name='Toegevoegd door')
    content = models.CharField(max_length=150000, verbose_name="Inhoud")
    class Meta:
        verbose_name = verbose_name_plural = 'Opening en bijzondheden'


class RemarksPriorMeeting(models.Model):
    studio_meeting = models.ForeignKey(StudioMeetingNote, on_delete=models.DO_NOTHING, related_name='studio_meeting_remarks_prior_meeting', verbose_name='Studio overleg')
    added_by = models.ForeignKey(CustomUser, on_delete=models.DO_NOTHING, related_name='added_by_remarks_prior', verbose_name='Toegevoegd door')
    content = models.CharField(max_length=150000, verbose_name="Inhoud")
    class Meta:
        verbose_name = verbose_name_plural = 'Opmerkingen over vorige notulen'


class IssuesToAddress(models.Model):
    studio_meeting = models.ForeignKey(StudioMeetingNote, on_delete=models.DO_NOTHING, related_name='studio_meeting_issues_to_address', verbose_name='Studio overleg')
    added_by = models.ForeignKey(CustomUser, on_delete=models.DO_NOTHING, related_name='added_by_issues_to_address', verbose_name='Toegevoegd door')
    content = models.CharField(max_length=150000, verbose_name="Inhoud")
    class Meta:
        verbose_name = verbose_name_plural = 'Binnengekomen punten'


class OurNextMove(models.Model):
    studio_meeting = models.ForeignKey(StudioMeetingNote, on_delete=models.DO_NOTHING, related_name='studio_meeting_our_next_move', verbose_name='Studio overleg')
    added_by = models.ForeignKey(CustomUser, on_delete=models.DO_NOTHING, related_name='added_by_our_next_move', verbose_name='Toegevoegd door')
    content = models.CharField(max_length=150000, verbose_name="Inhoud")
    class Meta:
        verbose_name = verbose_name_plural = 'Wij zijn aan zet'

class QuestionRound(models.Model):
    studio_meeting = models.ForeignKey(StudioMeetingNote, on_delete=models.DO_NOTHING, related_name='studio_meeting_question_round', verbose_name='Studio overleg')
    added_by = models.ForeignKey(CustomUser, on_delete=models.DO_NOTHING, related_name='added_by_question_round', verbose_name='Toegevoegd door')
    content = models.CharField(max_length=150000, verbose_name="Inhoud")
    class Meta:
        verbose_name = verbose_name_plural = 'Rondvraag'

嗨,法姆·莫里斯。请你提供你的models.py,我可以在这里复制吗?@Eliakin Costa我刚刚添加了它