我在数据库中有一个现有条目,并且我想在我的views.py中检查该条目是否已存在于数据库中,如果存在,则新值将替换该行中的旧数据,否则为该行创建一个新行。该用户。我怎样才能做到这一点?
#models.py
class Member(models.Model):
username = models.CharField(max_length=16, primary_key=True)
password = models.CharField(max_length=16)
profile = models.OneToOneField(Profile, null=True)
following = models.ManyToManyField("self", symmetrical=True)
class Message(models.Model):
user = models.ForeignKey(Member, related_name='%(class)s_user')
recip = models.ForeignKey(Member, related_name='%(class)s_recip')
pm = models.BooleanField(default=True)
time = models.DateTimeField()
text = models.CharField(max_length=4096)
def __str__(self):
return self.username
#forms.py
class UploadFileForm(forms.ModelForm):
class Meta:
model = ProfilePic
fields = ['text','thumbnail']
#models.py
class ProfilePic(models.Model):
user = models.ForeignKey(Member, related_name='%(class)s_user', null=True)
text = models.TextField(max_length=4096)
thumbnail = models.FileField(upload_to='media', null=True)
#views.py
if request.POST:
username = request.session['username']
member_obj = Member.objects.get(pk=username)
form = UploadFileForm(request.POST,request.FILES)
profile_pic = form.save(commit=False)
**#checking if username already exists in the DB:**
member_obj = Member.objects.update_or_create(username=username)
**#if yes then replace data in the row with the new one,
# if not create a new row**
profile_pic.user = member_obj
profile_pic.save()
试试这个,
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
cd = form.cleaned_data
username = request.session['username']
if Member.objects.filter(username=username).exists():
member_obj = Member.objects.get(username=username)
profile_pic = ProfilePic.objects.get(user=member_obj)
profile_pic.user = member_obj
# you can update other fields by using object.field_name (e.g. profile_pic.text = request.POST.get['text']
profile_pic.save()
else:
ProfilePic.objects.create(user=username)
return HttpResponse('success')
else:
return HttpResponse(form.errors)
else:
form = UploadFileForm
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句