首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >py+Django 如何用ORM抓关联资料呈现在画面?

py+Django 如何用ORM抓关联资料呈现在画面?

提问于 2022-05-03 16:03:03
回答 0关注 0查看 79

我在练习py+Django做网页,想要呈现出Memo栏位里面的内容。 目前遇到使用ORM关联表两张表单Software 和 Memo,要抓资料的时候都抓不到我要的id编号栏位 ,已经试了很多天还是想不出来要修改哪里,想请教我该如何修改才能抓到我要的对应栏位 ?

例如: 我想要抓Software id:1 对应到 Memo的id: 4(softwareid:1),但抓到的id栏位呈现出来的却是 Memo id:1 (softwareid:32)

谢谢各位.

贴上我的代码

Models:

Software Tabel

代码语言:js
复制
class Software(models.Model):
    STATUS_CHOICES = [
        (0, '规划中'),
        (1, '开发中'),
        (2, '使用中'),
        (3, '已废弃')
    ]
    name = models.CharField(max_length=100, verbose_name="系统名称")
    url = models.CharField(max_length=100, verbose_name="系统网址")
    status = models.PositiveIntegerField(default=0, choices=STATUS_CHOICES,  verbose_name="目前状态") 
    company = models.ForeignKey(Company, on_delete=models.CASCADE,  verbose_name="开发公司或单位")
    team = models.ForeignKey(Team, on_delete=models.DO_NOTHING,  verbose_name="所属组别")
    def __str__(self):
        return self.name

Memo Table

代码语言:js
复制
class Memo(models.Model):
    notes = models.TextField()
    software = models.ForeignKey(Software, on_delete=models.CASCADE)
    #software = models.ForeignKey(Software, on_delete=models.SET_NULL, null=True, blank=True)
    timestamp = models.DateTimeField(default=timezone.now)
 
    def __str__(self):
        return self.notes

Template:

代码语言:js
复制
{% extends 'base.html' %}
{% block title %}
教务资讯系统查核系统
{% endblock %}
{% block main %}
<h3>教务处所属资讯系统--删除备注</h3>
<hr>
<h2 style="color: red;">请确认是否要删除!</h2>
<form method="POST" name="myform" action=".">
{% csrf_token %}
<input name=softwareid type='hidden' value='{{ target_soft.id }}'>
<table class="table table-striped">
    <h4> 标题:{{item.name}}</h4>
    <tr>
        <td align=right>备注事项:</td>
        <td><input type=text name="memo" size=50  value='{{target_memo.notes}}'></td>
    </tr>     
    <tr><td> </td><td>
        <input type=submit value="确定删除" class="btn btn-danger">
    </td></tr>
</table>
</form>

View:

代码语言:js
复制
def del_memo(request,pk=None,logtask=None):
    logged_user = User.objects.get(username=request.user.username)
    logged_user = UserProfile.objects.get(user=logged_user)
    teamid = Team.objects.get(name = logged_user.team).id
    target_soft = Software.objects.get( id = pk)
    item = Software.objects.get(id=pk)   
    if request.method == "POST":
        softwareid = request.POST.get('softwareid')
        target_software = Software.objects.get(id=pk)
        target_software.delete()
    try:
        target_memo = Memo.objects.get(id=pk)
        print(target_memo)
    except:           
        return redirect("/showall/")            
    return render(request,"del_memo.html",locals())

Url:

代码语言:js
复制
urlpatterns = [
    path('delmemo/',views.del_memo),
    path('delmemo/<int:pk>/',views.del_memo),
    path('', views.index),
]+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

ORM db:

Software Table
Software Table
Memo Table
Memo Table

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档