Django 保存管理员表单时,如何更新用户的日期字段?
我构建了一个django应用程序,用于存储会议记录。studio note对象称为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本身的会议开始日期字段的日期
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我刚刚添加了它