Django: Instanz auf Existenz überprüfen
Verfasst: Mittwoch 6. August 2008, 22:56
Hallo,
experimentiere grade ein wenig mit django und steh vor nem Problem. Ich möchte eine Art Shortlink-Application erstellen. Dazu muss ich überprüfen, ob in der Datenbank ein Eintrag mit der gleichen Shortlink-ID (Aus Ziffern, Klein- und Großbuchstaben, 4 Zeichen lang) exisitert und dann ggf einen neuen generieren.
Nur tut das alles nicht so wie ich will
Ich bin jetzt mal zwei Wochen nicht online, dürft aber trotzdem über meine Art des Codings schimpfen 
Gruß & Danke
experimentiere grade ein wenig mit django und steh vor nem Problem. Ich möchte eine Art Shortlink-Application erstellen. Dazu muss ich überprüfen, ob in der Datenbank ein Eintrag mit der gleichen Shortlink-ID (Aus Ziffern, Klein- und Großbuchstaben, 4 Zeichen lang) exisitert und dann ggf einen neuen generieren.
Nur tut das alles nicht so wie ich will

Code: Alles auswählen
from django.db import models
from django.contrib import admin
import random
TYPES = [map(chr, range(97, 123)), map(chr, range(65, 91)), map(int, range(0, 10))]
# Klein- und Grossbuchstaben sowie Ziffern mappen
class ShortLink():
link = ""
while True:
for i in range(4):
type = random.randint(0, 2)
n = random.randint(0, len(TYPES[type])-1)
link += str(TYPES[type][n])
# Pruefsumme erzeugen
try:
self.get(link=link)
# gibts ihn schon?
except:
break
# wenn nein, brich ab
def __str__(self):
return "<ShortLink %s" % self.link
class Link(models.Model):
url = models.URLField('Adresse')
date = models.DateTimeField(auto_now=True)
link = ShortLink()
def __str__(self):
return "Link nach %s (%s)" % (self.url, self.link)
class Meta:
ordering = ['-date']
verbose_name = "Link"
verbose_name_plural = "Links"
admin.site.register(Link)

Gruß & Danke