我正在创建一个工作板站点,其中所有作业都显示在列表中,每个作业都是一个链接,指向显示有关作业的更多信息的页面。
我有以下型号:
private void DpTimerTick_GetEnemyAmmo(object sender, EventArgs e)
{
lstBEnemies.SelectedItem = EnemyList[0];
}
Views.py:
<Label Content="{Binding SelectedItem.Ammo, ElementName=lstBEnemies}" />
在index.html上,可用作业列为:
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
# Create your models here.
class Employer(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
def __str__(self):
return self.user.first_name
@receiver(post_save, sender=User)
def create_employer(sender, instance, created, **kwargs):
if created:
Employer.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_employer(sender, instance, **kwargs):
instance.employer.save()
class Job(models.Model):
poster = models.ForeignKey(Employer, on_delete=models.CASCADE)
job_title = models.CharField(max_length=50)
establishment_name = models.CharField(max_length = 50)
address = models.CharField(max_length = 50)
state = models.CharField(max_length = 20)
zip_code = models.CharField(max_length = 10)
def __str__(self):
return self.job_title + " - " + self.establishment_name \
+ ", " + self.poster.user.first_name + " " +self.poster.user.last_name
我希望这些是可点击的链接,这会将用户带到另一个页面,为他们提供有关该作业的更多详细信息。我认为我需要def index(request):
jobs = Job.objects.all
return render(request, 'core/index.html', {'jobs' :jobs })
个对象的某种id值来实现这一点,但我可能错了。有谁知道怎么做这个?注意:我之前使用 <table>
<tbody>
{% for job in jobs %}
<tr>
<td><a href="#">{{ job.job_title}} - {{ job.establishment_name }}</a></td>
</tr>
{% endfor %}
</tbody>
</table>
做了类似于用户ID的操作,但是如何使用Job
个对象执行此操作?
答案 0 :(得分:1)
所有模型(包括您的作业模型)都有一个唯一的主键字段,默认情况下称为id
。
答案 1 :(得分:0)
只想澄清一下,以便了解幕后发生的事情。
Id字段不是魔法
事实上,Django正在为你添加一个字段。每次创建模型Django都会添加以下字段:
id = models.AutoField(primary_key=True)
这确保了数据库的唯一性和数据完整性。这是相应的documentation
出于教育目的,这里可以覆盖默认行为:
my_field = models.AutoField(primary_key=True)
注意强>
此外,人们通常不认为这是一个大问题。但是,有时它真的可以成为一个真正考虑它的生命救星。因为Stack上有很多问题要求如何恢复这种行为。