【发布时间】:2022-07-28 23:10:42
【问题描述】:
我有一个组模型:
class Group(models.Model):
leader = models.ForeignKey(User, on_delete=models.CASCADE)
name = models.CharField(max_length=55)
description = models.TextField()
joined = models.ManyToManyField(User, blank=True)
我最近添加了leader 将其领导权移交给其他用户的功能。这很好,但后来我注意到我的 GroupDetail 模板顶部有一个created by {{group.leader},我认为最好有一个founder 和一个leader,这样人们就可以看到哪个用户创建了集团与当前领导者。
现在我正在努力解决的是如何实现这一点。我假设founder 将与一个用户相关联,也与组的第一个leader 相关联。在某一时刻,两个字段都将是同一个用户。但是我如何在同一个模型中有两个 ForeignKey?或者有没有更好的方法来解决这个问题。
目前更换领导的逻辑是这样的:
<form method="POST">
{% csrf_token %}
{{form.as_p}}
<select id="newLeaderSelect">
{% for member in group.joined.all %}
{% if member != group.leader%}
<option id='newLeader' value={{ member.id }}>{{ member }}</option>
{% endif %}
{% endfor %}
</select>
<button>CHANGE LEADER</button>
{{form.errors}}
</form>
<script>
let leader = document.getElementById('leader')
let newLeaderSelect = document.getElementById('newLeaderSelect')
leader.value = newLeaderSelect.value
newLeaderSelect.onchange = () => {
leader.value = newLeaderSelect.value
}
</script>
我的看法:
class ChangeLeader(UpdateView):
model = Group
form_class = ChangeLeaderForm
template_name = 'change_leader.html'
def form_valid(self, form):
return HttpResponseRedirect(reverse('group_detail', args=[str(group.pk)]))
一切都可以改变领导者,所以我唯一的问题是如何在我的 Group 模型中实现founder?最好的方法是什么?
【问题讨论】:
标签: django django-models foreign-keys django-model-field