如果有错误或误导,请用标题纠正我,谢谢。
我对 Django Python 很陌生。我正在使用 Django 3.1.1。
我的问题是关于"Model".objects.create()
,我将它与 ajax 一起使用以在我的Logger
模型中保存或创建数据。
问题:我怎样才能链接Logger.userprofile
到UserProfile.user
usingLogger.objects.create()
或者下一步要做什么来链接这两个字段?
我的UserProfile
模型已经User
通过 链接到模型,OneToOneField
但正在使用 保存数据form.save()
,这很成功。以下是我迄今为止通过遵循众多教程构建的内容。
这已经在工作,它正在我的模型中创建数据,我只需要添加 和 之间的链接,UserProfile
以便Logger
轻松识别创建的日志。
Logger
通过二维码扫描在模型中创建日志。
视图.py
def processQRCode(request):
if request.method == 'POST':
qrcoderes = request.POST['qrcoderes']
logged_in = request.POST['logged_in']
logged_in_location = request.POST['logged_in_location']
Logger.objects.create(
qrcode_uuid = qrcoderes, #edited from qrcode_uuid to qrcoderes to distinguish the two variables.
logged_in = logged_in,
logged_in_location = logged_in_location
)
return HttpResponse('Success!')
模型.py
用户档案模型
class UserProfile(models.Model):
GENDER = (
('Male', 'Male'),
('Female', 'Female'),
)
user = models.OneToOneField(User, related_name='userprofile', null=True, on_delete=models.SET_NULL)
qrcode_uuid = models.UUIDField(unique=True, default=uuid4)
qr_code = models.ImageField(upload_to='qr_codes', blank=True)
firstName = models.CharField(max_length=200)
middleName = models.CharField(max_length=200)
lastName = models.CharField(max_length=200)
gender = models.CharField(max_length=6, choices=GENDER)
birthdate = models.DateField(max_length=200)
contact = models.CharField(max_length=200)
agency = models.CharField(max_length=200)
deptSec = models.CharField(max_length=200)
designation = models.CharField(max_length=200)
streetHouse = models.CharField(max_length=200)
purok = models.CharField(max_length=200)
barangay = models.CharField(max_length=200)
cityMunicipality = models.CharField(max_length=200)
province = models.CharField(max_length=200)
date_created = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name_plural = 'User Profile'
def __str__(self):
return self.firstName + " " + self.middleName + " " + self.lastName
def save(self, *args, **kwargs):
qrcode_img = qrcode.make(self.qrcode_uuid)
canvas = Image.new('RGB', (370, 370), 'white')
draw = ImageDraw.Draw(canvas)
canvas.paste(qrcode_img)
fileName = f'qr-code-{self.qrcode_uuid}.png'
buffer = BytesIO()
canvas.save(buffer,'PNG')
self.qr_code.save(fileName, File(buffer), save=False)
canvas.close()
super().save(*args, **kwargs)
记录仪型号
class Logger(models.Model):
userprofile = models.OneToOneField(UserProfile, null=True, on_delete=models.SET_NULL)
qrcode_uuid = models.CharField(max_length=200, null=True)
logged_in = models.CharField(max_length=1, default="1")
logged_in_location = models.CharField(max_length=200, null=True)
log_datetime = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name_plural = 'Logger'
def __str__(self):
return self.logged_in_location + " " + self.qrcode_uuid
Ajax.js
function processQRCodeDetails(){
$.ajax({
type:'POST',
url: '/processqrcode/',
data:{
qrcoderes: $('#process-qrcoderes').val(),
logged_in: $('#logged_in').val(),
logged_in_location: $('#logged_in_location').val(),
csrfmiddlewaretoken: $('input[name="csrfmiddlewaretoken"]').val()
},
success: function(data){
$('#staticBackdrop').modal();
console.log('Success');
},
error: function(data){
console.log('Error')
}
});
}
模板.html
<form id="process-qrcoderes-form">
{% csrf_token %}
<input class="form-control" type="text" name="process-qrcoderes" id="process-qrcoderes" onchange="processQRCodeDetails(); return false;" autofocus="autofocus">
<input type="text" name="logged_in" id="logged_in" value="1">
<input type="text" name="logged_in_location" id="logged_in_location" value="test">
</form>