Django Updateview html 带有使用当前实例对象值的链接的模板
Django Updateview html templet with links using current instance object values
我有两个模型
class AccGroup(models.Model):
grpid = models.BigAutoField(primary_key=True, editable=False)
groupname = models.CharField(max_length=40, default="")
class Meta:
indexes = [models.Index(fields=['groupname'])]
def __str__(self):
return "%s" % (self.groupname)
class Account(models.Model):
accid = models.BigAutoField(primary_key=True, editable=False)
shortcut = models.CharField(max_length=10, default="")
accname = models.CharField(max_length=100, default="")
accgrp = models.ForeignKey(AccGroup, on_delete=models.RESTRICT, default=0)
class Meta:
indexes = [models.Index(fields=['shortcut']),models.Index(fields=['accname'])
]
def __str__(self):
return "%s--%s" % (self.shortcut, self.accname)
在上述模型上定义了一个更新视图
class AccountUpdateForm(UpdateView):
model = Account
fields = ['shortcut','accname','accgrp']
def get_success_url(self):
currid = self.kwargs['pk']
account = Account.objects.get(pk=currid)
print(account)
return ('/polls/accmst/'+ str(account.accid))
和对应的HTML模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Update Account</title>
</head>
<body>
<form action="" method="post">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" value="Save" />
</form>
<p>
<a class="btn btn-info btn-sm" href="{% url 'polls:accgrpList' %}">Back To Group List</a>
</p>
<p>
<a class="btn btn-info btn-sm" href="{% url 'polls:accgrpList' form.accgrp.grpid %}">Back To Account List</a>
</p>
</body>
</html>
所以成功时使用当前帐户对象主键显示同一页面
还有两个链接
Link 1 点 a 组列表 转换为 http://localhost:8000/polls/accgrplist
Link 2 我的问题是我想指向 url
http://localhost:8000/polls/accgrplist/2
其中最后一部分是当前账户对象的grpid
模板中的以下更改完成了我的工作
<a class="btn btn-info btn-sm" href="{% url 'polls:accgrpList' form.accgrp.value %}">Back To Account List</a>
我有两个模型
class AccGroup(models.Model):
grpid = models.BigAutoField(primary_key=True, editable=False)
groupname = models.CharField(max_length=40, default="")
class Meta:
indexes = [models.Index(fields=['groupname'])]
def __str__(self):
return "%s" % (self.groupname)
class Account(models.Model):
accid = models.BigAutoField(primary_key=True, editable=False)
shortcut = models.CharField(max_length=10, default="")
accname = models.CharField(max_length=100, default="")
accgrp = models.ForeignKey(AccGroup, on_delete=models.RESTRICT, default=0)
class Meta:
indexes = [models.Index(fields=['shortcut']),models.Index(fields=['accname'])
]
def __str__(self):
return "%s--%s" % (self.shortcut, self.accname)
在上述模型上定义了一个更新视图
class AccountUpdateForm(UpdateView):
model = Account
fields = ['shortcut','accname','accgrp']
def get_success_url(self):
currid = self.kwargs['pk']
account = Account.objects.get(pk=currid)
print(account)
return ('/polls/accmst/'+ str(account.accid))
和对应的HTML模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Update Account</title>
</head>
<body>
<form action="" method="post">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" value="Save" />
</form>
<p>
<a class="btn btn-info btn-sm" href="{% url 'polls:accgrpList' %}">Back To Group List</a>
</p>
<p>
<a class="btn btn-info btn-sm" href="{% url 'polls:accgrpList' form.accgrp.grpid %}">Back To Account List</a>
</p>
</body>
</html>
所以成功时使用当前帐户对象主键显示同一页面
还有两个链接
Link 1 点 a 组列表
Link 2 我的问题是我想指向 url http://localhost:8000/polls/accgrplist/2 其中最后一部分是当前账户对象的grpid
模板中的以下更改完成了我的工作
<a class="btn btn-info btn-sm" href="{% url 'polls:accgrpList' form.accgrp.value %}">Back To Account List</a>