2016-11-08 5 views
0

1.Models heißt UserRecord.
2.Below ist der Code meiner Ansicht.Django-Modelle erstellen Datenduplikate

Angefordert unten URL mehrmals ohne Intervall, etwas wie gleichzeitige Threading.
http://127.0.0.1:8000/data/1/test/english/
Nach diesem Vorgang wird die MyRecords-Spalte mit doppelten Werten gefüllt.
Ich habe etwas in Django Dokument gefunden, um 'mit transaction.atomic' zu verwenden, um mit diesem Problem umzugehen, aber es hat nicht funktioniert.

+0

user = models.ForeignKey (Benutzer) – blueboy

Antwort

0

Mysql

class UserRecord(models.Model): 
    user = models.ForeignKey(User) 
    MyRecords = models.CharField(max_length=128) 
    class Meta: 
     unique_together = (("user", "MyRecords"),) #mutil column uique idex 
    def __unicode__(self): 
     return self.user.username 
1

Sie brauchen keine Benutzer von User.objects.get (user = User.objects.get (username = current_username)) Statt request.user für gleiche verwenden zu erhalten.

@login_required 
def data(request, page, keyword,strEncode): 
    current_user = request.user 
    data_s = dosomething() 
    UserRecord.objects.get_or_create(user=current_user,MyRecords=keyword) # in order to create unique value 
    return JsonResponse(data_s, safe=False) 

Und MyRecords = Schlüsselwort wird ein neuer Datensatz jedes Mal ein neues Schlüsselwort in den def Daten Ansicht, so erstellen Sie bitte überprüfen Sie Ihren Code übergeben wird.

+0

Klasse UserRecord (models.Model): user = models.ForeignKey (Benutzer) MyRecords = models.CharField (max_length = 128) def __unicode __ (self): zurückgeben self.user.username blueboy

+0

@blueboy lies deinen Code sorgfältig. Das Problem liegt in Code, den Sie nicht geteilt haben. –

+0

user = models.ForeignKey (Benutzer), ich meine keine Wiederholungen für den aktuellen Benutzer. – blueboy